<?php

class Application_Model_Ofertas extends Sgit_Model
{  
    protected $_name = 'ofertas';
    protected $_primary = 'id';




    public function getOfertas($values = null)
    {


         //permite pasar unico parametro id del contador
        if(is_numeric($values)){
            $id=$values;unset($values);$values['id']=$id;unset($id);
        } 

        $auth = Zend_Auth::getInstance();

        $id_usuario=$auth->getIdentity()->id;

        $select = $this->getAdapter()->select();

        $sql_numTareas="(SELECT count(*) from gestion_oferta where id_oferta=ofertas.id) as numTareas";
        $sql_level="(SELECT round(abs(AVG(DATEDIFF(fecha,CURDATE()))/COUNT(*)),2) FROM gestion_oferta where id_oferta=ofertas.id) as level";
        $sql_sinrespuesta="(SELECT count(*) from gestion_oferta where necesita_respuesta=1 AND tiempo_respuesta IS NULL AND id_oferta=ofertas.id) as sinrespuesta";
        $sql_lasttarea="(SELECT fecha from gestion_oferta where id_oferta=ofertas.id order by fecha desc limit 1 ) as last_post";
        $sql_tiempo="(SELECT sum(tiempo_empleado) from gestion_oferta where id_oferta=ofertas.id) as tiempo_empleado";
        $sql_tiempo_respuesta="(SELECT avg(tiempo_respuesta) from gestion_oferta where necesita_respuesta=1 AND id_oferta=ofertas.id) as tiempo_respuesta";
 
        $select->from(array($this->_name),array('*',$sql_level,$sql_numTareas,$sql_sinrespuesta,$sql_lasttarea,$sql_tiempo_respuesta,$sql_tiempo));
        $select->joinLeft('zonas', 'zonas.id = ofertas.id_zona', array('zona' => 'nombre','codigo_zona'=>'ini'));
        $select->joinLeft('usuarios', 'usuarios.id = ofertas.id_usuario', array('responsable' => 'nombre'));
        $select->joinLeft('user_oferta', "user_oferta.id_oferta = ofertas.id AND user_oferta.id_user=$id_usuario", array('id_user'));

   
        if (is_array($values['id']) || is_numeric($values['id']))
            $select->where("{$this->_name}.id IN (?)", $values['id']);
            //filter1
        if ($values['id_usuario'])
            $select->where("{$this->_name}.id_usuario= ?", $values['id_usuario']);
            //filter2
        if ($values['id_zona'])
            $select->where("{$this->_name}.id_zona= ?", $values['id_zona']);
            //filter4
        if ($values['estado'])
            $select->where("{$this->_name}.estado= ?", $values['estado']);
            //filter5
        if ($values['id_area_oferta'])
            $select->where("{$this->_name}.id_area_oferta= ?", $values['id_area_oferta']);
        
        if ($values['acceso']){
            $select->joinLeft(array('uo'=>'user_oferta'), "uo.id_oferta = ofertas.id");
            $select->where("uo.id_user= ?", $values['acceso']);
        }

            

        $rows = $this->getAdapter()->fetchAll($select);


        if (is_numeric($values['id']))
            return $rows[0];
        else
            return $rows;


    }
    
} 




